package com.hunliji.monitor.service.api.model.param;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.hunliji.common.param.BasePageParam;
import lombok.Getter;
import lombok.Setter;

import java.util.Date;
import java.util.List;

/**
 * 钱包消耗查询条件
 * 查询消耗的范围：线索通计划的消耗，智优投计划的消耗
 * 可以是分页的查询
 * @author wuchen
 */
@Getter
@Setter
public class QueryWalletConsumeParam extends BasePageParam {
    /********************* 查询条件 ***********************/
    /**
     * 商家id列表
     */
    private List<Long> merchantIdList;
    /**
     * 排除的商家列表
     */
    private List<Long> excludeMerchantIdList;
    /**
     * 查询的开始时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date queryStartTime;

    /**
     * 查询的截止时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date queryEndTime;

    /**
     * 业务类型，可区分线索通和智优投
     */
    private Short bsType;


    /*********************** 排序条件 ******************************/


    /*********************** 分组条件 ******************************/
    /**
     * 使用的分组条件，列表顺序就是分组顺序
     */
    private List<String> groupList;

    /**
     * 钱包消耗的分组条件，
     * 这里定义常量，
     * 就是说，分组条件可以包含以下常量
     */
    @Getter
    public class WalletConsumeGroup{
        /**
         * 通过计划id进行分组
         */
        public static final String MERCHANT = "merchant_id";
        /**
         * 通过计划id进行分组
         */
        public static final String PLAN = "plan_id";
        /**
         * 基于记录时间进行分组
         */
        public static final String RECORD_TIME = "record_time";

        /**
         * 基于业务类型进行分组（账单分表查询） 1线索通2智优投
         */
        public static final String BS_TYPE = "bs_type";

    }
}
